package com.esender.common.model;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 在接口模块-策略模块-短信网关模块需要做校验和封装的POJO类对象
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StandardReport implements Serializable {
    /**
     * 为了在网关模块的运营商二次推送中可以更方便的查询是否需要给客户推送
     */
    private String apiKey;
    /**
     * 针对当前短信的唯一标识
     */
    private Long sequenceId;

    /**
     * 客户端ID
     */
    private Long clientId;

    /**
     * 客户业务内的uid
     */
    private String uid;

    /**
     * 目标手机号
     */
    private String mobile;


    /**
     * 短信的发送时间
     */
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime sendTime;
    /**
     * 短信的发送状态， 0-等待ing，1-成功，2-失败
     */
    private int reportState;
    /**
     * 短信发送失败得原因
     */
    private String errorMsg;

    /**
     * 是否回调
     */
    private Integer isCallback;
    /**
     * 回调地址
     */
    private String callbackUrl;

    /**
     * 重试次数
     */
    private Integer resendCount = 0;
    /**
     * 是否是第二次获取投递得es修改消息
     */
    private Boolean reUpdate = false;
}
